/*
 * Filename:    indicationRegionDeptHelp.java
 * Copyright:   2014 中国平安保险（集团）股份有限公司 版权所有
 * Company:     平安科技养老险及健康险系统开发部
 * Create at:   2014年10月20日
 */
package com.paic.mhis.hcpms.quota.settlement.biz.service.impl;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import org.springframework.stereotype.Component;

import com.paic.mhis.hcpms.quota.calculationreport.kpiinterface.dto.KpiDeptDTO;
import com.paic.mhis.hcpms.quota.settlement.common.Constants;
import com.paic.mhis.hcpms.quota.settlement.dto.IndicationRegionOrgDTO;
import com.paic.mhis.hcpms.quota.settlement.dto.IndicationRegionOrgPageBean;

/**
 * 机构下的科室查询帮助类
 * 
 * @author DUQIFANG262
 * 
 */
@Component("indicationRegionDeptHelp")
public class IndicationRegionDeptHelp {


	/**
	 * 获取科室对应的月份数据
	 * @param kpiDeptList
	 * @return
	 */
	public IndicationRegionOrgPageBean processMedicalDepartment(List<KpiDeptDTO> kpiDeptList,String endTime) {
		
		IndicationRegionOrgPageBean pageBean = new IndicationRegionOrgPageBean();

		List<IndicationRegionOrgDTO> regionOrgBeanList = new ArrayList<IndicationRegionOrgDTO>();
		
		Set<String> deptCodeList = new HashSet<String>();
		//获取当前科室 编码集合
		for (KpiDeptDTO deptDto :kpiDeptList) {
			deptCodeList.add(deptDto.getDeptCode());
		}
		
		//根据获取的医疗机构编码集合遍历数据
		for (String deptCode: deptCodeList) {
			IndicationRegionOrgDTO regionOrgBean = new IndicationRegionOrgDTO();
			int i = 0;
			for (KpiDeptDTO kpiDept :kpiDeptList) {
				//只需要一次赋值
				if(deptCode.equals(kpiDept.getDeptCode()) && i == 0){
					regionOrgBean.setType("depart");
					regionOrgBean.setId(kpiDept.getDeptCode());
					regionOrgBean.setName(kpiDept.getDeptName());
					regionOrgBean.setRegionCode(kpiDept.getSociationCode());
					regionOrgBean.setOrgCode(kpiDept.getMedicalOrgCode());
					regionOrgBean.setDeptCode(kpiDept.getDeptCode());
					i++;
				}
				if(deptCode.equals(kpiDept.getDeptCode())){
					//判断是否是最后一个月的数据 是则获取同比环比值
					String kpiTime = kpiDept.getKpiTime();
					//赋值同比，环比
					this.getDeptRatio(regionOrgBean, kpiDept, endTime);
					// 获取月份
					String month = IndicationHospitalHelp.getMonth(kpiTime);
					//获取月份的值
					this.makeMonthValue(regionOrgBean, month, kpiDept.getKpiValue());
				}
				
			}
			regionOrgBeanList.add(regionOrgBean);
		}

		pageBean.setData(regionOrgBeanList);
		return pageBean;
	}

	/**
	 *  赋值 同比，环比 
	 * @param regionOrgBean
	 * @param kpiOrg
	 * @param endTime
	 */
	private void getDeptRatio(IndicationRegionOrgDTO regionOrgBean,KpiDeptDTO kpiDept,String endTime){
		if (endTime.equals(kpiDept.getKpiTime())) {
			// 同比
			if (null != kpiDept.getPeriodRatio()) {
				regionOrgBean.setYoy(kpiDept.getPeriodRatio().doubleValue());
			}
			// 环比
			if (null != kpiDept.getChainRatio()) {
				regionOrgBean.setMom(kpiDept.getChainRatio().doubleValue());
			}
		}
	}

	/**
	 * 根据日期赋值
	 * @param bean
	 * @param month
	 * @param monthValue
	 */
	private void makeMonthValue(IndicationRegionOrgDTO bean, String month, BigDecimal monthValue) {
		if (Constants.month_01.equals(month)) {
			if (monthValue != null) {
				bean.setFirst(monthValue.doubleValue());
			} else {
				bean.setFirst(0d);
			}

		}
		if (Constants.month_02.equals(month)) {
			if (monthValue != null) {
				bean.setSecond(monthValue.doubleValue());
			} else {
				bean.setSecond(0d);
			}

		}
		if (Constants.month_03.equals(month)) {
			if (monthValue != null) {
				bean.setThird(monthValue.doubleValue());
			} else {
				bean.setThird(0d);
			}

		}
		if (Constants.month_04.equals(month)) {
			if (monthValue != null) {
				bean.setFourth(monthValue.doubleValue());
			} else {
				bean.setFourth(0d);
			}
		}
		if (Constants.month_05.equals(month)) {
			if (monthValue != null) {
				bean.setFifth(monthValue.doubleValue());
			} else {
				bean.setFifth(0d);
			}
		}
		if (Constants.month_06.equals(month)) {
			if (monthValue != null) {
				bean.setSixth(monthValue.doubleValue());
			} else {
				bean.setSixth(0d);
			}

		}
		if (Constants.month_07.equals(month)) {
			if (monthValue != null) {
				bean.setSeventh(monthValue.doubleValue());
			} else {
				bean.setSeventh(0d);
			}
		}
		if (Constants.month_08.equals(month)) {
			if (monthValue != null) {
				bean.setEighth(monthValue.doubleValue());
			} else {
				bean.setEighth(0d);
			}
		}
		if (Constants.month_09.equals(month)) {
			if (monthValue != null) {
				bean.setNinth(monthValue.doubleValue());
			} else {
				bean.setNinth(0d);
			}
		}
		if (Constants.month_10.equals(month)) {
			if (monthValue != null) {
				bean.setTenth(monthValue.doubleValue());
			} else {
				bean.setTenth(0d);
			}
		}
		if (Constants.month_11.equals(month)) {
			if (monthValue != null) {
				bean.setEleventh(monthValue.doubleValue());
			} else {
				bean.setEleventh(0d);
			}
		}
		if (Constants.month_12.equals(month)) {
			if (monthValue != null) {
				bean.setTwelfth(monthValue.doubleValue());
			} else {
				bean.setTwelfth(0d);
			}
		}

	}

}
